package com.linkgie.galaxyframework.metadata;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;

/**
 * 数据类型；
 * <p>
 * 
 * 用于声明数据字段的标准类型；
 * <p>
 * 
 * 注：仅适用于 {@link DataEntity} 标注的类型中；
 * <p>
 * 
 * @author huanghaiquan
 *
 */
@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataType {

	/**
	 * 数据类型；
	 * 
	 * @return
	 */
	StandardType value() default StandardType.NULL;

	/**
	 * 数据类型；
	 * 
	 * @return
	 */
	@AliasFor("value")
	StandardType dataType() default StandardType.NULL;

	/**
	 * 内容类型；
	 * 
	 * @return
	 */
	String contentType() default "";
	
	/**
	 * 数量限制；
	 * 
	 * 当字段是数组时(iterable == true)生效，指定数组的最大长度；
	 * 
	 * 当值小于等于 0 时表示不做限制；
	 * 
	 * @return
	 */
	int limits() default 0;

}
